// 统一路径的横杆
const { normalizePath } = require("./utils");
const path = require("path");
const { resolvePlugins } = require("./plugins");
const fs = require("fs-extra");
async function resolveConfig() {
  //root指的是当前命令所在的目录，也就是根目录
  const root = normalizePath(process.cwd()); //  __dirname
  // 增加这一句,设置缓存目录
  const cacheDir = normalizePath(path.resolve(`node_modules/.vite50`));
  let config = {
    root,
    cacheDir,
  };
  //读取用户自己设置的插件

  // 获取路径
  const configFile = path.resolve(root, "vite.config.js");
  // 文件是否存在
  const exists = await fs.pathExists(configFile);
  let userPlugins = [];
  if (exists) {
    // 加载文件
    const userConfig = require(configFile);
    userPlugins = userConfig.plugins || [];
    delete userConfig.plugins;
    //用用户自定义配置项覆盖默认配置
    config = { ...config, ...userConfig };
  }
  // 给插件 传入
  for (let plugin of userPlugins) {
    if (plugin.config) {
      let res = await plugin.config(config);
      if (res) {
        // 合并到 config 配置
        config = { ...config, ...res };
      }
    }
  }
  // 用户自己设置的插件 和 内置插件 合并
  config.plugins = await resolvePlugins(config, userPlugins);

  return config;
}
module.exports = resolveConfig;
